#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "estructuras.h"
#include "constantes.h"
#include "configuracion.h"

ListConfig *listaConfig;

int cargarConfig(void)
{
  FILE *archivo;
  char input[TAMANIOCAMPO];
  char *clave;
  char *valor;
   
  listaConfig = NULL;

  if(nDisco == 1)
	{
		if ((archivo = fopen("./configuracion.txt", "r"))!= NULL) /*abre el archivo para lectura*/
		{
		 while ((fscanf(archivo, "%s", input)) != EOF) /* leo el archivo hasta que haya un espacio y guardo el tokens en input*/
		 {
			 valor = strstr(input, "=") + 1; /* strstr() Localiza la primera aparición en la cadena input de la secuencia de caracteres (excluyendo el carácter nulo) en la cadena apuntada por "="*/
			 clave = strtok(input, "=");   /*me devuelve el tokens qe esta antes del "="*/
		 meterEnLista(clave,valor);
		 }
		 fclose(archivo);
		 return 0;
		}
		else
		{
		return -1;
		}
	}
	if(nDisco == 2)
	{
		if ((archivo = fopen("./configuracion2.txt", "r"))!= NULL) /*abre el archivo para lectura*/
		{
		 while ((fscanf(archivo, "%s", input)) != EOF) /* leo el archivo hasta que haya un espacio y guardo el tokens en input*/
		 {
			 valor = strstr(input, "=") + 1; /* strstr() Localiza la primera aparición en la cadena input de la secuencia de caracteres (excluyendo el carácter nulo) en la cadena apuntada por "="*/
			 clave = strtok(input, "=");   /*me devuelve el tokens qe esta antes del "="*/
		 meterEnLista(clave,valor);
		 }
		 fclose(archivo);
		 return 0;
		}
		else
		{
		return -1;
		}
	}  
 
}

void meterEnLista(char* clave,char* valor)
{
	
	ListConfig * ptr;

	ptr = (ListConfig*)malloc(sizeof(ListConfig));
	ptr->clave = (char*) malloc(sizeof(char)*strlen(clave)+1);
	ptr->valor = (char*) malloc(sizeof(char)*strlen(valor)+1);

	strcpy(ptr->clave, clave);
	strcpy(ptr->valor, valor);
	
	ptr->next = listaConfig;
	listaConfig = ptr;
}


char* obtenerValor(const char* clave)
{

	ListConfig* ptr;	
	ptr = listaConfig;
	char* bufferValor;

	while ( ptr != NULL && strcmp(ptr->clave, clave))
	{
		ptr = ptr->next;
	}
	
	if ( ptr != NULL )
	{
		bufferValor = (char*) malloc(strlen(ptr->valor)+1);
		strcpy(bufferValor,ptr->valor);
		return bufferValor;
	}else
	{
		return NULL;
	}
	
}
